package com.woniuxy.oa.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;

import com.woniuxy.oa.entity.Employee;
import com.woniuxy.oa.entity.PageBeanList;
import com.woniuxy.oa.entity.Schedule;
import com.woniuxy.oa.service.ScheduleService;

@Controller
public class ScheduleController {
	
	@Autowired
	ScheduleService scheduleService;
	
	/**
	 * 分页显示
	 * @return
	 */
	@GetMapping("/schedule/getAllSchedule")
	public String getAllSchedule(Schedule schedule,Employee employee,
			Model model,HttpServletRequest request) {
		//把查询条件加进workplan里面
		schedule.setEmployee(employee);
		//自己写的获取当前页的方法
		int pageIndex=getPageIndex(request);
		//定义每页显示多少数据
		int pageSize=10;
		//调用方法获取模糊查询后的信息
		PageBeanList<Schedule> pb = 
				scheduleService.getScheduleConditionByPage(pageIndex, pageSize, schedule);
		//调用自己写的获取请求路径的方法
		pb.setUrl(getUrl(request));
		model.addAttribute("pb", pb);
		return "system/schedule";
	}

	/**
	 * 自己写的获取每个页码请求路径的方法
	 * @param request
	 * @return
	 */
	private String getUrl(HttpServletRequest request) {
		//这个是获取工程名就是/工程名
		String contextPath = request.getContextPath();
		//这个就是获取/工程名后面的路径资源路径   就是/工程名后面的   /请求路径
		String servletPath = request.getServletPath();
		//这个是获取全部参数 就是?后面的
		String queryString = request.getQueryString();
		//判断传参不为空   就是判断有没有传参
		if( queryString!=null && queryString.indexOf("&pageIndex=")!=-1) {
			//这个就是截取这个&pageIndex参数之前的参数
			queryString=queryString.substring(0, queryString.indexOf("&pageIndex="));
		}
		return contextPath+servletPath+"?"+queryString;
	}

	/**
	 * 获取当前页码的方法
	 * @param request
	 * @return
	 */
	private int getPageIndex(HttpServletRequest request) {
		//如果没有传页码  就按第一页显示
		if(request.getParameter("pageIndex")==null || request.getParameter("pageIndex").equals("")) {
			return 1;
		}
		//把页码转为integer类型返回回去
		return Integer.parseInt(request.getParameter("pageIndex"));
	}
	
	/**
	 * 这是跳转添加页面
	 * @return
	 */
	@GetMapping("/schedule/addSchedule")
	public String skipAddSchedule() {
		return "addSchedule";
	}
	
	/**
	 * 这是处理添加方法
	 * @return
	 */
	@PostMapping("/schedule/addSchedule")
	public String addSchedule(HttpSession session,Schedule schedule) {
		Employee employee=(Employee) session.getAttribute("user");
		schedule.setEmployee(employee);
		scheduleService.addSchedule(schedule);
		return "redirect:/schedule/getAllSchedule";
	}
	
	/**
	 * 这是根据id查询信息的方法  就是回显
	 */
	@GetMapping("/schedule/{s_id}")
	public String getSchedule(@PathVariable("s_id")Integer s_id,
			Model model) {
		Schedule schedule = scheduleService.getScheduleByS_id(s_id);
		model.addAttribute("schedule", schedule);
		return "updateSchedule";
	}
	
	/**
	 * 这是修改方法
	 */
	@PutMapping("/schedule")
	public String modifySchedule(Schedule schedule) {
		scheduleService.modifySchedule(schedule);
		return "redirect:/schedule/getAllSchedule";
	}
	
	/**
	 * 删除日程安排   这里使用软删除
	 * @return
	 */
	@DeleteMapping("/schedule/{s_id}")
	public String removeSchedule(@PathVariable("s_id")Integer s_id) {
		scheduleService.modifySchedule(s_id);
		return "redirect:/schedule/getAllSchedule";
	}
	
}
